package com.ynet.middleground.contract.service;

import java.util.List;

import javax.validation.Valid;

import com.ynet.core.common.ServiceResult;
import com.ynet.middleground.contract.bean.*;
import com.ynet.middleground.contract.dto.UserSealDTO;

/**
 * @author liulx
 * @description 印模接口服务定义
 * @date 2020-04-20 13:42
 */
public interface SealService {

    /**
     * 创建个人客户的模板印章
     * 
     * @param addPersonTemplateSealReq 创建个人印章模板请求类
     * @return 电子印章图片 base64 数据
     */
    ServiceResult<String> addPersonTemplateSeal(@Valid AddPersonTemplateSealReq addPersonTemplateSealReq);

    /**
     * 创建企业客户的模板印章
     * 
     * @param addOrganizeTemplateSealReq 创建企业印章模板请求类
     * @return 电子印章图片 base64 数据
     */
    ServiceResult<String> addOrganizeTemplateSeal(@Valid AddOrganizeTemplateSealReq addOrganizeTemplateSealReq);

    /**
     * 保存自定义印模图片
     *
     * @param addSealReq 添加自定义印章模板请求类
     * @return 保存后的 id
     */
    ServiceResult<Integer> addSeal(@Valid AddSealReq addSealReq);

    /**
     * 根据用户 id 查询用户所有印模列表
     *
     * @param queryUserSealReq 查询用户印模列表请求类
     * @return 印模列表
     */
    ServiceResult<List<UserSealDTO>> listUserSeal(@Valid QueryUserSealReq queryUserSealReq);

    /**
     * 根据印模 id 查询印模数据
     *
     * @param userSealReq 查询印模详情请求类
     * @return 用户印模信息
     */
    ServiceResult<UserSealDTO> getUserSeal(@Valid UserSealReq userSealReq);

    /**
     * 删除印模
     *
     * @param userSealReq 查询印模详情请求类
     * @return 结果标志，以 success 字段值标识 true/false
     */
    ServiceResult deleteUserSeal(@Valid UserSealReq userSealReq);

}
